package com.ynet.middleground.riskmanage.service;

import java.util.List;

import javax.validation.Valid;

import com.ynet.core.common.ServiceResult;
import com.ynet.middleground.riskmanage.bean.*;
import com.ynet.middleground.riskmanage.dto.*;

/**
 * @ClassName ColdChainService
 * @Description 对接怡之航冷链服务
 * @Author zhangyongbin
 * @Date 2020/8/14 16:01
 * @Version 1.0
 */
public interface ColdChainService {

    /**
     * @Description 历史业务量查询
     * @Date 16:04 2020/8/14
     * @Param [req]历史业务量查询请求信息
     * @return com.ynet.core.common.ServiceResult<java.util.List<com.ynet.middleground.riskmanage.dto.ColdChainHistoryBusinessVolumeDTO>>
     **/
    ServiceResult<List<ColdChainHistoryBusinessVolumeDTO>>
        getHistoryBusinessVolume(@Valid ColdChainHistoryBusinessVolumeReq req);

    /**
     * @Description 在库信息查询
     * @Author zhangyongbin
     * @Date 2020/8/17 11:12
     * @Param [req] 在库信息查询请求信息
     * @return com.ynet.core.common.ServiceResult<java.util.List<com.ynet.middleground.riskmanage.dto.ColdChainStockInfoDTO>>
     **/
    ServiceResult<List<ColdChainStockInfoDTO>> getStockInfo(@Valid ColdChainStockInfoReq req);

    /**
     * @author songyf
     * @Description 货种小类信息查询
     * @Date 2020-08-17 14:36
     * @Param ColdchainGoodsTypeQueryReqPager
     * @return ColdchainGoodsTypeDTO
     **/
    ServiceResult<List<ColdchainGoodsTypeDTO>> getColdchainGoodsType(@Valid ColdchainGoodsTypeQueryReqPager req);

    /**
     * @author songyf
     * @Description 货种小类信息同步
     * @Date 2020-08-17 16:36
     * @param requestObject
     * @return
     */
    ServiceResult<String> coldchainGoodsTypeSyn(@Valid ColdchainGoodsTypeReq requestObject);

    /**
     * 查询冷链系统中现已动态质押的数据
     *
     * @param req 查询冷链动态质押数据请求信息
     * @return 动态质押数据集合
     * @author liulx
     * @date 2020-08-18 16:05:37
     */
    ServiceResult<List<ColdchainDynamicPledgeDTO>> listDynamicPledge(@Valid ColdchainDynamicPledgeQueryReq req);

    /**
     * 用户查询服务申请
     * 
     * @param req
     * @return
     */
    ServiceResult<Object> customerApply(@Valid ColdchainCustomerApplyReq req);

    /**
     * 申请结果查询接口
     *
     * @param req
     * @return
     */
    ServiceResult<List<ColdchainApplyResultDTO>> applyResultQuery(@Valid ApplyResultQueryReq req);

    /**
     * 接收冷链用户申请结果通知
     *
     * @param req
     * @return
     */
    ServiceResult<Object> receiveApplyResult(@Valid ReceiveApplyResultReq req);
}
